/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Entidades;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 *
 * @author ivana
 */
@Entity
@Table(name = "operario")
@NamedQueries({
    @NamedQuery(name = "Operario.findAll", query = "SELECT o FROM Operario o"),
    @NamedQuery(name = "Operario.findByIdoperario", query = "SELECT o FROM Operario o WHERE o.idoperario = :idoperario"),
    @NamedQuery(name = "Operario.findByApellido", query = "SELECT o FROM Operario o WHERE o.apellido = :apellido"),
    @NamedQuery(name = "Operario.findByNombre", query = "SELECT o FROM Operario o WHERE o.nombre = :nombre"),
    @NamedQuery(name = "Operario.findByNumerodocumento", query = "SELECT o FROM Operario o WHERE o.numerodocumento = :numerodocumento"),
    @NamedQuery(name = "Operario.findByDireccion", query = "SELECT o FROM Operario o WHERE o.direccion = :direccion"),
    @NamedQuery(name = "Operario.findByTelefono1", query = "SELECT o FROM Operario o WHERE o.telefono1 = :telefono1"),
    @NamedQuery(name = "Operario.findByTelefono2", query = "SELECT o FROM Operario o WHERE o.telefono2 = :telefono2"),
    @NamedQuery(name = "Operario.findByCuil", query = "SELECT o FROM Operario o WHERE o.cuil = :cuil"),
    @NamedQuery(name = "Operario.findByFechaalta", query = "SELECT o FROM Operario o WHERE o.fechaalta = :fechaalta"),
    @NamedQuery(name = "Operario.findByFechabaja", query = "SELECT o FROM Operario o WHERE o.fechabaja = :fechabaja")})
public class Operario implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idoperario")
    private Integer idoperario;
    @Basic(optional = false)
    @Column(name = "apellido")
    private String apellido;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Basic(optional = false)
    @Column(name = "numerodocumento")
    private int numerodocumento;
    @Basic(optional = false)
    @Column(name = "direccion")
    private String direccion;
    @Basic(optional = false)
    @Column(name = "telefono1")
    private int telefono1;
    @Basic(optional = false)
    @Column(name = "telefono2")
    private int telefono2;
    @Basic(optional = false)
    @Column(name = "cuil")
    private String cuil;
    @Basic(optional = false)
    @Column(name = "fechaalta")
    private String fechaalta;
    @Column(name = "fechabaja")
    private String fechabaja;
    @OneToMany(mappedBy = "operario")
    private Collection<Pesajeentrada> pesajeentradaCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operario")
    private Collection<Contrato> contratoCollection;
    @OneToMany(mappedBy = "operario")
    private Collection<Pesajesalida> pesajesalidaCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operario")
    private Collection<Ciu> ciuCollection;
    @OneToMany(mappedBy = "operario")
    private Collection<Cargaempaque> cargaempaqueCollection;
    @JoinColumn(name = "idlocalidad", referencedColumnName = "idlocalidad")
    @ManyToOne(optional = false)
    private Localidad localidad;
    @JoinColumn(name = "idprovincia", referencedColumnName = "idprovincia")
    @ManyToOne(optional = false)
    private Provincia provincia;
    @JoinColumn(name = "idpais", referencedColumnName = "idpais")
    @ManyToOne(optional = false)
    private Pais pais;
    @JoinColumn(name = "idestadooperario", referencedColumnName = "idestadooperario")
    @ManyToOne(optional = false)
    private Estadooperario estadooperario;
    @JoinColumn(name = "idtipodocumento", referencedColumnName = "idtipodocumento")
    @ManyToOne(optional = false)
    private Tipodocumento tipodocumento;
    @OneToMany(mappedBy = "operario")
    private Collection<Recepcion> recepcionCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operario")
    private Collection<Condicion> condicionCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operario")
    private Collection<Lagar> lagarCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operario")
    private Collection<Operariorol> operariorolCollection;

    public Operario() {
    }

    public Operario(Integer idoperario) {
        this.idoperario = idoperario;
    }

    public Operario(Integer idoperario, String apellido, String nombre, int numerodocumento, String direccion, int telefono1, int telefono2, String cuil, String fechaalta) {
        this.idoperario = idoperario;
        this.apellido = apellido;
        this.nombre = nombre;
        this.numerodocumento = numerodocumento;
        this.direccion = direccion;
        this.telefono1 = telefono1;
        this.telefono2 = telefono2;
        this.cuil = cuil;
        this.fechaalta = fechaalta;
    }

    public Integer getIdoperario() {
        return idoperario;
    }

    public void setIdoperario(Integer idoperario) {
        Integer oldIdoperario = this.idoperario;
        this.idoperario = idoperario;
        changeSupport.firePropertyChange("idoperario", oldIdoperario, idoperario);
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        String oldApellido = this.apellido;
        this.apellido = apellido;
        changeSupport.firePropertyChange("apellido", oldApellido, apellido);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        String oldNombre = this.nombre;
        this.nombre = nombre;
        changeSupport.firePropertyChange("nombre", oldNombre, nombre);
    }

    public int getNumerodocumento() {
        return numerodocumento;
    }

    public void setNumerodocumento(int numerodocumento) {
        int oldNumerodocumento = this.numerodocumento;
        this.numerodocumento = numerodocumento;
        changeSupport.firePropertyChange("numerodocumento", oldNumerodocumento, numerodocumento);
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        String oldDireccion = this.direccion;
        this.direccion = direccion;
        changeSupport.firePropertyChange("direccion", oldDireccion, direccion);
    }

    public int getTelefono1() {
        return telefono1;
    }

    public void setTelefono1(int telefono1) {
        int oldTelefono1 = this.telefono1;
        this.telefono1 = telefono1;
        changeSupport.firePropertyChange("telefono1", oldTelefono1, telefono1);
    }

    public int getTelefono2() {
        return telefono2;
    }

    public void setTelefono2(int telefono2) {
        int oldTelefono2 = this.telefono2;
        this.telefono2 = telefono2;
        changeSupport.firePropertyChange("telefono2", oldTelefono2, telefono2);
    }

    public String getCuil() {
        return cuil;
    }

    public void setCuil(String cuil) {
        String oldCuil = this.cuil;
        this.cuil = cuil;
        changeSupport.firePropertyChange("cuil", oldCuil, cuil);
    }

    public String getFechaalta() {
        return fechaalta;
    }

    public void setFechaalta(String fechaalta) {
        String oldFechaalta = this.fechaalta;
        this.fechaalta = fechaalta;
        changeSupport.firePropertyChange("fechaalta", oldFechaalta, fechaalta);
    }

    public String getFechabaja() {
        return fechabaja;
    }

    public void setFechabaja(String fechabaja) {
        String oldFechabaja = this.fechabaja;
        this.fechabaja = fechabaja;
        changeSupport.firePropertyChange("fechabaja", oldFechabaja, fechabaja);
    }

    public Collection<Pesajeentrada> getPesajeentradaCollection() {
        return pesajeentradaCollection;
    }

    public void setPesajeentradaCollection(Collection<Pesajeentrada> pesajeentradaCollection) {
        this.pesajeentradaCollection = pesajeentradaCollection;
    }

    public Collection<Contrato> getContratoCollection() {
        return contratoCollection;
    }

    public void setContratoCollection(Collection<Contrato> contratoCollection) {
        this.contratoCollection = contratoCollection;
    }

    public Collection<Pesajesalida> getPesajesalidaCollection() {
        return pesajesalidaCollection;
    }

    public void setPesajesalidaCollection(Collection<Pesajesalida> pesajesalidaCollection) {
        this.pesajesalidaCollection = pesajesalidaCollection;
    }

    public Collection<Ciu> getCiuCollection() {
        return ciuCollection;
    }

    public void setCiuCollection(Collection<Ciu> ciuCollection) {
        this.ciuCollection = ciuCollection;
    }

    public Collection<Cargaempaque> getCargaempaqueCollection() {
        return cargaempaqueCollection;
    }

    public void setCargaempaqueCollection(Collection<Cargaempaque> cargaempaqueCollection) {
        this.cargaempaqueCollection = cargaempaqueCollection;
    }

    public Localidad getLocalidad() {
        return localidad;
    }

    public void setLocalidad(Localidad localidad) {
        Localidad oldLocalidad = this.localidad;
        this.localidad = localidad;
        changeSupport.firePropertyChange("localidad", oldLocalidad, localidad);
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        Provincia oldProvincia = this.provincia;
        this.provincia = provincia;
        changeSupport.firePropertyChange("provincia", oldProvincia, provincia);
    }

    public Pais getPais() {
        return pais;
    }

    public void setPais(Pais pais) {
        Pais oldPais = this.pais;
        this.pais = pais;
        changeSupport.firePropertyChange("pais", oldPais, pais);
    }

    public Estadooperario getEstadooperario() {
        return estadooperario;
    }

    public void setEstadooperario(Estadooperario estadooperario) {
        Estadooperario oldEstadooperario = this.estadooperario;
        this.estadooperario = estadooperario;
        changeSupport.firePropertyChange("estadooperario", oldEstadooperario, estadooperario);
    }

    public Tipodocumento getTipodocumento() {
        return tipodocumento;
    }

    public void setTipodocumento(Tipodocumento tipodocumento) {
        Tipodocumento oldTipodocumento = this.tipodocumento;
        this.tipodocumento = tipodocumento;
        changeSupport.firePropertyChange("tipodocumento", oldTipodocumento, tipodocumento);
    }

    public Collection<Recepcion> getRecepcionCollection() {
        return recepcionCollection;
    }

    public void setRecepcionCollection(Collection<Recepcion> recepcionCollection) {
        this.recepcionCollection = recepcionCollection;
    }

    public Collection<Condicion> getCondicionCollection() {
        return condicionCollection;
    }

    public void setCondicionCollection(Collection<Condicion> condicionCollection) {
        this.condicionCollection = condicionCollection;
    }

    public Collection<Lagar> getLagarCollection() {
        return lagarCollection;
    }

    public void setLagarCollection(Collection<Lagar> lagarCollection) {
        this.lagarCollection = lagarCollection;
    }

    public Collection<Operariorol> getOperariorolCollection() {
        return operariorolCollection;
    }

    public void setOperariorolCollection(Collection<Operariorol> operariorolCollection) {
        this.operariorolCollection = operariorolCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idoperario != null ? idoperario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Operario)) {
            return false;
        }
        Operario other = (Operario) object;
        if ((this.idoperario == null && other.idoperario != null) || (this.idoperario != null && !this.idoperario.equals(other.idoperario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidades.Operario[idoperario=" + idoperario + "]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }

}
